package com.spring.sys.controller;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.google.code.kaptcha.Producer;

import com.spring.util.EncryptionUtil;
import com.spring.util.constant.Constant;
import com.spring.base.AdminBaseController;



@Controller
@RequestMapping("/")
public class VerifyCodeController extends AdminBaseController{
	
	@Autowired
	private Producer captchaProducer;  
  
	@RequestMapping("/verify")  
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response,String common) throws Exception {  
  
        response.setDateHeader("Expires", 0); 

        // Set standard HTTP/1.1 no-cache headers. 

        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  
        // Set IE extended HTTP/1.1 no-cache headers (use addHeader). 

        response.addHeader("Cache-Control", "post-check=0, pre-check=0");  
        // Set standard HTTP/1.0 no-cache header. 

        response.setHeader("Pragma", "no-cache");  
        // return a jpeg 

        response.setContentType("image/jpeg");  
        // create the text for the image
 
        String capText = captchaProducer.createText();  
        // store the text in the session 

//        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  
        
        
		Cookie cookie=null;
		if("login".equals(common)){
			 cookie = new Cookie(Constant.HXP_MANAGER_LOGIN_VERFYCODE_KEY,EncryptionUtil.MD5(capText));
		}else if ("back".equals(common)){
			 cookie = new Cookie(Constant.HXP_MANAGER_BACKPWD_VERFYCODE_KEY,EncryptionUtil.MD5(capText));
		}else if("register".equals(common)){
			 cookie = new Cookie(Constant.HXP_MANAGER_REG_VERFYCODE_KEY,EncryptionUtil.MD5(capText));
		}else if("institution".equals(common)){
			 cookie = new Cookie(Constant.INSTITUTION_LOGIN_VERFYCODE_KEY,EncryptionUtil.MD5(capText));
		}
	    cookie.setPath("/");
	    response.addCookie(cookie);
        
        
        // create the image with the text  

        BufferedImage bi = captchaProducer.createImage(capText);  
        ServletOutputStream out = response.getOutputStream();  
        // write the data out  

        ImageIO.write(bi, "jpg", out);  
        try {  
            out.flush();  
        } finally {  
            out.close();  
        }  
        return null;  
    }  

    

	/*
	 * 给定范围获得随机颜色
	 */
	private Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
}
